<?php


namespace app\api\service\alipay;

use Alipay\EasySDK\Kernel\Config;
use Alipay\EasySDK\Kernel\Factory;

/**
 * Class AlipayServer
 * @package app\api\service\alipay
 * Author FashionJune
 */
class AlipayServer
{
    protected object $app;
    protected static $instance;

    /**
     * @title
     * @author FashionJune
     * @return static
     */
    public static function instance()
    {
        if (is_null(self::$instance)) {
            self::$instance = new static();
        }
        return self::$instance;
    }

    public function __construct()
    {
        $options = new Config();
        $options->protocol = 'http';
        $options->gatewayHost = 'openapi.alipaydev.com';//测试环境
//        $options->gatewayHost = 'openapi.alipay.com';
        $options->signType = 'RSA2';

        $options->appId = env('ALIPAY.APP_ID');

        //私钥
        $options->merchantPrivateKey = env('ALIPAY.PRIVATE_KEY');
        //公钥
        $options->alipayPublicKey = env('ALIPAY.PUBLIC_KEY');
//        $options->alipayCertPath = '<-- 请填写您的支付宝公钥证书文件路径，例如：/foo/alipayCertPublicKey_RSA2.crt -->';
//        $options->alipayRootCertPath = '<-- 请填写您的支付宝根证书文件路径，例如：/foo/alipayRootCert.crt" -->';
//        $options->merchantCertPath = '<-- 请填写您的应用公钥证书文件路径，例如：/foo/appCertPublicKey_2019051064521003.crt -->';
        //注：如果采用非证书模式，则无需赋值上面的三个证书路径，改为赋值如下的支付宝公钥字符串即可
        // $options->alipayPublicKey = '<-- 请填写您的支付宝公钥，例如：MIIBIjANBg... -->';
        //可设置异步通知接收服务地址（可选）
//        $options->notifyUrl = "<-- 请填写您的支付类接口异步通知接收服务地址，例如：https://www.test.com/callback -->";
        //可设置AES密钥，调用AES加解密相关接口时需要（可选）
//        $options->encryptKey = "<-- 请填写您的AES密钥，例如：aa4BtZ4tspm2wnXLb1ThQA== -->";
        $this->app = Factory::setOptions($options);
    }

}